package com.xbongbong.pro.statistic.enums;

import lombok.Getter;

import java.util.Objects;

/**
 * 行列日期字段位置
 * @author xinpeng.jiang
 * @date 2021/12/16 15:21
 * @version 1.0
 * @since V1.0
 */
@Getter
public enum RowColIndexEnum {
    /**
     * 行中第一
     */
    ROW_FIRST(1, RowColEnum.ROW.getValue(), 0),
    /**
     * 行中第二
     */
    ROW_SECOND(2, RowColEnum.ROW.getValue(), 1),
    /**
     * 行中第三
     */
    ROW_THIRD(3, RowColEnum.ROW.getValue(), 2),
    /**
     * 列中第一
     */
    COL_FIRST(101, RowColEnum.COL.getValue(), 0),
    /**
     * 列中第二
     */
    COL_SECOND(102, RowColEnum.COL.getValue(), 1),
    /**
     * 列中第三
     */
    COL_THIRD(103, RowColEnum.COL.getValue(), 2),
    /**
     * 防错
     */
    UNKNOWN(-1, -1, -1),
    ;

    private final Integer code;
    
    private final Integer type;

    private final Integer index;

    RowColIndexEnum(Integer code, Integer type, Integer index) {
        this.code = code;
        this.type = type;
        this.index = index;
    }

    public static Integer getCodeByTypeAndIndex(Integer type, Integer index) {
        for (RowColIndexEnum value : RowColIndexEnum.values()) {
            if (Objects.equals(value.getType(), type) && Objects.equals(value.getIndex(), index)) {
                return value.getCode();
            }
        }
        return UNKNOWN.getCode();
    }

    public static RowColIndexEnum getByCode(Integer code) {
        for (RowColIndexEnum value : RowColIndexEnum.values()) {
            if (Objects.equals(value.getCode(),code)) {
                return value;
            }
        }
        return UNKNOWN;
    }
}
